package com.smedi.ismedi.progress.core.port.adapter.service;

import com.smedi.ismedi.progress.core.application.command.ProcessInstanceStartCommand;
import com.smedi.ismedi.progress.core.application.command.ProcessListQuery;
import com.smedi.ismedi.progress.core.application.command.ProcessTaskCancelCommand;
import com.smedi.ismedi.progress.core.application.command.ProcessTaskCompleteCommand;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.ProcessTask;

import java.util.List;

/**
 * @Author Cookie
 * @Date 2022/7/19
 */
public interface ProcessRemoteService {

    /**
     * 启动 流程实例
     *
     * @param processInstanceStartCommand 流程实例 启动 命令
     */
    void startProcessInstance(ProcessInstanceStartCommand processInstanceStartCommand);

    /**
     * 完成 流程任务
     *
     * @param processTaskCompleteCommand 流程任务 完成 命令
     * @return ProcessTask
     */
    ProcessTask completeProcessTask(ProcessTaskCompleteCommand processTaskCompleteCommand);

    /**
     * 撤回 流程任务
     *
     * @param processTaskCancelCommand 流程任务 撤回 命令
     */
    ProcessTask cancelProcessTask(ProcessTaskCancelCommand processTaskCancelCommand);


    List<ProcessTask> getProcessList(ProcessListQuery processListQuery);

}
